This project is my exploration of semantic segmentation on satellite imagery. A web app was built where users could upload a GeoTIFF image and get the segmented image.
The goal of the project is to segment satellite imagery into different classes of objects, i.e. woodlands, buildings, roads, etc.
Potential applications include:
The dataset consists of 41 images and their corresponding masks obtained from: https://landcover.ai.linuxpolska.com/. The landcover consists of rasters three-channel GeoTiffs with EPSG:2180 spatial reference system while masks are single-channel.
The masks contains 5 labels: unlablled (0), building (1), woodland (2), water(3), road(4). Unlablled class consists of all landcover types other than the types specified in labels 1-4. Overall, More than half of all mask pixels are unlablled, more than 1/3 are woodlands, and only a minority are buildings, water and road.
The images and masks were split into 256x256 smaller images. Image augmentation where additional datasets were created by randomly varying the brightness and constrast of source images.
2 segmentation architectures were used. A basic encoder-decorder network and Unet (https://arxiv.org/pdf/1505.04597.pdf). The basic network achieved 0.72 of IOU (Intersection over Union) and the Unet achieved 0.74 after about 30-40 epoches trained on the Google Colab platform.
Below are some evaluations on the test images
The Unet architecture was based on the paper by Olaf Ronneberger, Philipp Fischer, and Thomas Brox: https://arxiv.org/pdf/1505.04597.pdf.
In addition, the project takes reference from videos by DigitalSreeni: https://www.youtube.com/c/DigitalSreeni.